home *** CD-ROM | disk | FTP | other *** search
- ; KERMIT COMM DRIVER FOR
- ; ACE DUAL INTERFACE
- ;
- ; ANDY TEFFT, 8/22/90
- ;
- ; $Header: $
- .SBTTL Define start address for assembly
-
- .=$1003 ; Start assembly here
-
- .SBTTL Revision History
-
- ;
- ; Edit # Description
- ; ------ -----------
- ;
-
- ; DONT FORGET TO UPDATE THE VERSION
- ;$Log: $
-
- ;
- ;
- ; Vector for com cards starts here
- ; location $1003 for data
- ; location $1020 for routine jumps
- ; location $1040 for main routines
- ;
- baud ;
- sscdbd: .blkb 1 ;contains baud index(ala super serial card) used by init
- ; 6 - 300 baud
- ; 7 - 600
- ; etc
- .blkb 1 ;
- crdnam: .word NAME ; null terminated string of who we are
- SLOT: .blkb 1 ; com slot $n0
- kerins: .blkb 1 ; force initialization flag-when 0
- endker: .blkb 2 ; address of end of main kermit
- flowfg: .blkb 1 ; flow flag for xon/xoff controll b7=1 yes
- tl0end .word END ; end of this routine
- timect .blkb 1 ; time constant for rom wait rtn
- .=sscdbd+29 ; future expansion
- tlinit: jmp INIT ; initialize com card
- tl0cmd: jmp CMD ; command in A reg
- ;
- ; 0 - hang up
- ; $0b - set baud
- ; $0c - set break on the line
- ; $91 - turn remote on (xon)
- ; $93 - turn remote off(xoff)
- ;
- ; routine will return false(0) if unable
- tl0cp: jmp CHKINP ; check for input ch ready-0 false
- tl0gpc: jmp GETINP ; get input ch
- tl0ppc: jmp PUTCHR ; put output character
- tl0exi: jmp RESET ; reset card and restore initialized
- .=sscdbd+29+32 ; futures
- wait: .blkb 3 ; wait routine-use rom wait 220=125ms 25=2ms
- VSTRING .blkb 3 ; print string x=lsb,y=msb x&y->null terminated string
- rdkey: .blkb 3 ; read keyboard
- prcrlf: .blkb 3 ; print cr and lf
- telcnc: .blkb 3 ; check for keyboard character
- telspa: .blkb 3 ; set character parity
-
- CINIT = $C220
- SEND = $C22C
- ;VNAME = $1005
- ;VINIT = $1021
- ;VCMD = $1024
- ;VCHK = $1027
- ;VGET = $102A
- ;VPUT = $102D
- ;VRESET = $1030
- ;VEND = $100C
- ;SLOT = $1007
- ;BAUD = $1003
- COUT = $FDED
- HOME = $FC58
- ;VSTRING = $1043
-
- ORG $7F00
-
- ; JMP VECTORS
- ; LDA #$60
- ; STA GO3
- ; RTS
-
- NAME nasc <ACE .21>
- .byte $00
- BADBAUD .byte $8D
- nasc <YOU MUST CONNECT TO INITIALIZE>
- .byte $8D,$87
- nasc <COMM CARD BEFORE YOU SET BAUD>
- .byte $8D,00
- INIT BIT $CFFF
- JSR GO3 ;FIRST SWAP IN 80-COL CARD
- LDA SLOT ;SET UP JUMPS TO SERIAL
- ROR a
- ROR a
- ROR a
- ROR a
- AND #%00001111
- ORA #$C0
- STA GO2+2 ;STORE AS $CN
- STA GOSEND+2
- STA GOSETUP+2
- AND #%00001111
- TAX
- LDA #2
- STA $778,X ;SET CARD FOR FULL DUPLEX
- STA NOINBUF ;INITIALIZE BUFFER POSITIONS
- STA BUFPTR
- RTS
- SETBAUD LDA #21
- JSR $C300
- JSR HOME
- JSR GOSETUP
- LDA #1
- RTS
- CMD TAX
- AND #$80
- BNE XON ;DO FLOW CONTROL
- TXA
- CMP #$B
- BNE NOCMD
- LDA GOSETUP+2
- AND #$C0
- CMP #$C0
- BEQ SETBAUD
- LDX #BADBAUD\
- LDY #BADBAUD^
- JSR VSTRING
- LDA #0
- RTS
- XON TXA
- JSR PUTCHR ;SEND THE XON OR XOFF
- LDA #1
- RTS
- NOCMD LDA #0 ;INVALID/UNIMPLEMENTED
- RTS
- CHKINP BIT $CFFF
- JSR GO2 ;SELECT COMM CARD
- LDA $CE01
- AND #2 ;CHECK FOR NEW CHARACTER
- BEQ NONE
- LDY NOINBUF
- LDA $CE00 ;GET ANY NEW CHAR
- STA BUFFER,Y ;PUT IT IN THE BUFFER
- INC NOINBUF
- NONE LDA NOINBUF
- CMP BUFPTR ;ARE THERE ANY CHARS IN BUFFER?
- STA $CFFF
- JSR GO3 ;SELECT 80 COL CARD
- RTS
- GETINP JSR CHKINP
- LDY BUFPTR
- LDA BUFFER,Y ;GET NEXT BUFFERED CHAR
- ORA #$80
- CMP #$87
- BNE NOTBELL ;SKIP TIME-CONSUMING BELLS
- JSR BEEP
- LDA #2
- NOTBELL INC BUFPTR
- RTS
- PUTCHR STA TEMP ;SO WE CAN CHECK FOR ANOTHER INCOMING
- JSR CHKINP
- LDA TEMP
- JSR GOSEND ;FIRMWARE JUMP
- JSR CHKINP ;BUFFER ANOTHER
- STA $CFFF
- JSR GO3
- RTS
- RESET RTS
- BEEP LDX #100
- BEEP2 LDY #85
- BLIP BIT $C030
- DEY
- BNE BLIP
- JSR CHKINP
- DEX
- BNE BEEP2
- JSR CHKINP
- RTS
- GOSEND JMP $C22C ;JUMP TO FIRMWARE SEND ROUTINE
- RTS
- GOSETUP JMP $0032 ;FIRMWARE SETUP MENU
- RTS
- GO2 JMP $C24B ;SOME DO-NOTHING INSTRUCTIONS
- GO3 JMP $C3AF
- NOINBUF .byte $00 ;PTR TO LAST VALID CHAR IN BUF
- BUFPTR .byte $00 ;PTR TO FIRST VALID CHAR IN BUF
- TEMP .byte $00
- OLDBAUD .byte $08
- BUFFER DS 256
- END .byte $00
- ;VECTORS LDA #NAME\
- ; STA VNAME
- ; LDA #NAME^
- ; STA VNAME+1
- ; LDA #INIT\
- ; STA VINIT
- ; LDA #INIT^
- ; STA VINIT+1
- ; LDA #CMD\
- ; STA VCMD
- ; LDA #CMD^
- ; STA VCMD+1
- ; LDA #CHKINP\
- ; STA VCHK
- ; LDA #CHKINP^
- ; STA VCHK+1
- ; LDA #GETINP\
- ; STA VGET
- ; LDA #GETINP^
- ; STA VGET+1
- ; LDA #PUTCHR\
- ; STA VPUT
- ; LDA #PUTCHR^
- ; STA VPUT+1
- ; LDA #RESET\
- ; STA VRESET
- ; LDA #RESET^
- ; STA VRESET+1
- ; LDA #END\
- ; STA VEND
- ; LDA #END^
- ; STA VEND+1
- ; RTS
-